﻿using RockBus.DataContracts;
using RockBus.PipelineComponent.Interfaces;
using System.ServiceModel.Channels;

namespace RockBus.Pipeline.Interfaces
{
    public interface IPipelineFactory
    {
        void Reinitialize(SubscriberConfiguration subscriberConfiguration, PublisherConfiguration publisherConfiguration);

        IPipelineContext CreatePipelineContext(Message message);

        IPipeline CreateInboundRequestPipeline(ReceivePortDetail ad);

        IPipeline CreateOutboundRequestPipeline(SubscriptionDetail sd);

        IPipeline CreateInboundResponsePipeline(SubscriptionDetail sd);

        IPipeline CreateOutboundResponsePipeline(ReceivePortDetail ad);
    }
}